#pragma once

#include "Ettin/Events/Event.h"
#include "Ettin/Core/Layer.h"
#include "Ettin/Core/LayerStack.h"
#include "Ettin/Core/Window.h"
#include "Ettin/Events/ApplicatonEvent.h"

namespace Ettin {

	class Application
	{
	public:
				Application();
		virtual ~Application();

		void	Run();

		void OnEvent(Event& event);

		void PushLayer(Layer* Layer);
		void PushOverLayer(Layer* Layer);
	private:
		bool OnWindowClose(WindowCloseEvent& e);


		bool m_Running = true;
		std::unique_ptr<Window> m_Window;
		LayerStack m_LayerStack;
	};

	Application* CreateApplication();
}

